"""
GUI设计系统规范

定义统一的颜色、字体、间距、组件样式等设计规范
"""

import tkinter as tk
from tkinter import ttk
from typing import Dict, Any


class DesignSystem:
    """设计系统类 - 统一的UI设计规范"""
    
    # 🎨 现代化扁平配色系统 - 科技感与简洁美观
    COLORS = {
        # 主色调 - 现代科技蓝
        'primary': '#007AFF',           # iOS蓝 - 现代科技感
        'primary_dark': '#0056CC',      # 深科技蓝
        'primary_light': '#4DA3FF',     # 浅科技蓝
        'primary_bg': '#F0F7FF',        # 极浅蓝背景
        'primary_hover': '#0066E6',     # 悬停蓝色

        # 辅助色调 - 现代灰度
        'secondary': '#1C1C1E',         # 深空灰 - 扁平化
        'secondary_light': '#2C2C2E',   # 中深灰
        'secondary_medium': '#48484A',  # 中灰
        'accent': '#FF3B30',            # 现代红 - 扁平化
        'accent_light': '#FF6B60',      # 浅现代红

        # 功能色彩 - 扁平化设计
        'success': '#34C759',           # 现代绿 - iOS风格
        'success_light': '#5ED670',     # 浅现代绿
        'success_bg': '#F0FFF4',        # 成功背景
        'success_hover': '#28A745',     # 成功悬停

        'warning': '#FF9500',           # 现代橙 - 扁平化
        'warning_light': '#FFB340',     # 浅现代橙
        'warning_bg': '#FFF8F0',        # 警告背景
        'warning_hover': '#E6850E',     # 警告悬停

        'danger': '#FF3B30',            # 现代红 - 扁平化
        'danger_light': '#FF6B60',      # 浅现代红
        'danger_bg': '#FFF0F0',         # 危险背景
        'danger_hover': '#E6342A',      # 危险悬停

        'info': '#5AC8FA',              # 现代信息蓝
        'info_light': '#7DD3FC',        # 浅信息蓝
        'info_bg': '#F0FBFF',           # 信息背景
        'info_hover': '#4FB3E1',        # 信息悬停

        # 现代中性色彩 - 扁平化灰度系统
        'white': '#FFFFFF',             # 纯白
        'gray_50': '#FAFAFA',           # 极浅灰 - 背景
        'gray_100': '#F5F5F7',          # 浅灰 - 卡片背景
        'gray_200': '#E5E5EA',          # 边框灰
        'gray_300': '#D1D1D6',          # 分割线灰
        'gray_400': '#C7C7CC',          # 禁用灰
        'gray_500': '#8E8E93',          # 次要文字灰
        'gray_600': '#636366',          # 主要文字灰
        'gray_700': '#48484A',          # 深文字灰
        'gray_800': '#2C2C2E',          # 标题灰
        'gray_900': '#1C1C1E',          # 最深灰

        # 背景色彩 - 现代扁平化
        'bg_primary': '#FFFFFF',        # 主背景 - 纯白
        'bg_secondary': '#FAFAFA',      # 次背景 - 极浅灰
        'bg_sidebar': '#1C1C1E',        # 侧边栏 - 深空灰
        'bg_card': '#FFFFFF',           # 卡片背景 - 纯白
        'bg_hover': '#F5F5F7',          # 悬停背景 - 浅灰
        'bg_active': '#E5E5EA',         # 激活背景
        'bg_disabled': '#F5F5F7',       # 禁用背景

        # 侧边栏专用颜色
        'sidebar_card': '#2D3748',      # 侧边栏用户卡片背景 (略微亮于侧边栏)
        'sidebar_border': '#4A5568',    # 侧边栏边框颜色
        'sidebar_hover': '#374151',     # 侧边栏按钮悬停背景
        'sidebar_active': '#2563EB',    # 侧边栏激活状态背景

        # 文字色彩 - 现代层次
        'text_primary': '#1C1C1E',      # 主文字 - 深空灰
        'text_secondary': '#636366',    # 次文字 - 中灰
        'text_muted': '#8E8E93',        # 弱化文字 - 浅灰
        'text_white': '#FFFFFF',        # 白色文字
        'text_link': '#007AFF',         # 链接文字 - 科技蓝
        'text_disabled': '#C7C7CC',     # 禁用文字

        # 边框色彩 - 扁平化
        'border_light': '#E5E5EA',      # 浅边框
        'border_medium': '#D1D1D6',     # 中边框
        'border_dark': '#C7C7CC',       # 深边框
        'border_focus': '#007AFF',      # 焦点边框

        # 阴影色彩 - 微妙阴影
        'shadow_light': 'rgba(0, 0, 0, 0.05)',    # 浅阴影
        'shadow_medium': 'rgba(0, 0, 0, 0.1)',    # 中阴影
        'shadow_dark': 'rgba(0, 0, 0, 0.15)',     # 深阴影

        # 兼容性别名 - 保持向后兼容
        'light_gray': '#F5F5F7',        # 映射到 gray_100
        'light': '#FAFAFA',             # 映射到 gray_50
        'dark_gray': '#636366',         # 映射到 gray_600
        'dark': '#1C1C1E',              # 映射到 gray_900
        'black': '#000000',             # 纯黑
    }
    
    # 📝 现代化字体系统 - 简洁清晰
    FONTS = {
        # 字体族 - 跨平台兼容字体
        'family_primary': 'Microsoft YaHei',    # 主字体 - 中文友好
        'family_secondary': 'Arial',            # 备用字体
        'family_mono': 'Consolas',              # 等宽字体
        'family_fallback': 'sans-serif',        # 兜底字体

        # 字体大小 - 现代化尺寸系统
        'size_xs': 10,          # 极小 - 标签
        'size_sm': 11,          # 小 - 辅助文字
        'size_base': 13,        # 基础 - 正文
        'size_md': 14,          # 中等 - 重要文字
        'size_lg': 16,          # 大 - 小标题
        'size_xl': 18,          # 特大 - 标题
        'size_xxl': 20,         # 超大 - 大标题
        'size_title': 24,       # 页面标题
        'size_hero': 28,        # 主标题

        # 字体权重
        'weight_light': '300',      # 细体
        'weight_normal': '400',     # 常规
        'weight_medium': '500',     # 中等
        'weight_semibold': '600',   # 半粗
        'weight_bold': '700',       # 粗体

        # 现代化组合字体样式 - 兼容性字体
        'hero': ('Microsoft YaHei', 28, 'bold'),          # 主标题
        'title_large': ('Microsoft YaHei', 24, 'bold'),   # 大标题
        'title_medium': ('Microsoft YaHei', 20, 'bold'),  # 中标题
        'title_small': ('Microsoft YaHei', 18, 'bold'),   # 小标题
        'heading': ('Microsoft YaHei', 16, 'bold'),       # 章节标题
        'heading_sm': ('Microsoft YaHei', 14, 'bold'),    # 小章节标题
        'subheading': ('Microsoft YaHei', 14, 'normal'),  # 子标题
        'body_large': ('Microsoft YaHei', 14, 'normal'),   # 大正文
        'body': ('Microsoft YaHei', 13, 'normal'),         # 正文
        'body_small': ('Microsoft YaHei', 11, 'normal'),   # 小正文
        'caption': ('Microsoft YaHei', 10, 'normal'),      # 说明文字
        'button': ('Microsoft YaHei', 13, 'normal'),       # 按钮文字
        'button_large': ('Microsoft YaHei', 14, 'bold'), # 大按钮文字
        'label': ('Microsoft YaHei', 11, 'normal'),        # 标签文字
    }
    
    # 📏 现代化间距系统 - 8px基础网格
    SPACING = {
        'xs': 4,        # 极小间距 - 0.5x
        'sm': 8,        # 小间距 - 1x 基础单位
        'md': 16,       # 中等间距 - 2x
        'lg': 24,       # 大间距 - 3x
        'xl': 32,       # 特大间距 - 4x
        'xxl': 40,      # 超大间距 - 5x
        'xxxl': 48,     # 巨大间距 - 6x

        # 特定用途间距 - 现代化
        'padding_card': 24,         # 卡片内边距 - 更宽松
        'padding_section': 20,      # 区块内边距
        'padding_button': 16,       # 按钮内边距 - 更舒适
        'padding_input': 12,        # 输入框内边距
        'margin_section': 32,       # 区块外边距 - 更大间隔
        'margin_element': 16,       # 元素外边距
        'margin_component': 8,      # 组件间距
    }
    
    # 🔲 现代化尺寸系统 - 扁平化设计
    SIZES = {
        # 按钮尺寸 - 更现代的比例
        'button_height_sm': 32,     # 小按钮 - 更高
        'button_height_md': 40,     # 中按钮 - 标准高度
        'button_height_lg': 48,     # 大按钮 - 更突出
        'button_width_sm': 80,      # 小按钮宽度
        'button_width_md': 120,     # 中按钮宽度
        'button_width_lg': 160,     # 大按钮宽度

        # 输入框尺寸 - 现代化
        'input_height': 40,         # 输入框高度 - 更舒适
        'input_width_sm': 120,      # 小输入框
        'input_width_md': 240,      # 中输入框
        'input_width_lg': 320,      # 大输入框

        # 图标尺寸 - 清晰层次
        'icon_xs': 12,              # 极小图标
        'icon_sm': 16,              # 小图标
        'icon_md': 20,              # 中图标
        'icon_lg': 24,              # 大图标
        'icon_xl': 32,              # 特大图标
        'icon_xxl': 40,             # 超大图标

        # 边框圆角 - 扁平化设计
        'radius_none': 0,           # 无圆角 - 完全扁平
        'radius_sm': 4,             # 小圆角 - 微妙
        'radius_md': 8,             # 中圆角 - 现代
        'radius_lg': 12,            # 大圆角 - 友好
        'radius_xl': 16,            # 特大圆角
        'radius_full': 999,         # 完全圆角
        
        # 边框宽度
        'border_thin': 1,
        'border_medium': 2,
        'border_thick': 3,
    }
    
    # 🎭 阴影系统
    SHADOWS = {
        'none': '',
        'sm': '0 1px 3px rgba(0,0,0,0.12)',
        'md': '0 4px 6px rgba(0,0,0,0.1)',
        'lg': '0 10px 25px rgba(0,0,0,0.1)',
        'xl': '0 20px 40px rgba(0,0,0,0.1)',
    }
    
    @classmethod
    def setup_styles(cls, root: tk.Tk) -> ttk.Style:
        """设置全局样式"""
        style = ttk.Style()
        
        # 选择主题
        available_themes = style.theme_names()
        if 'clam' in available_themes:
            style.theme_use('clam')
        
        # 配置全局样式
        cls._configure_global_styles(style)
        cls._configure_sidebar_styles(style)
        cls._configure_button_styles(style)
        cls._configure_frame_styles(style)
        cls._configure_label_styles(style)
        cls._configure_entry_styles(style)
        cls._configure_treeview_styles(style)
        cls._configure_notebook_styles(style)
        
        return style
    
    @classmethod
    def _configure_global_styles(cls, style: ttk.Style):
        """配置现代化全局样式"""
        # 默认字体 - 现代化
        style.configure('.', font=cls.FONTS['body'])

        # 根窗口背景 - 纯白扁平化
        style.configure('TFrame',
                       background=cls.COLORS['bg_primary'],
                       relief='flat',
                       borderwidth=0)

        # 标签样式 - 现代化文字
        style.configure('TLabel',
                       background=cls.COLORS['bg_primary'],
                       foreground=cls.COLORS['text_primary'],
                       font=cls.FONTS['body'])
    
    @classmethod
    def _configure_sidebar_styles(cls, style: ttk.Style):
        """配置现代化侧边栏样式"""
        # 侧边栏框架 - 深色扁平化
        style.configure('Sidebar.TFrame',
                       background=cls.COLORS['bg_sidebar'],
                       relief='flat',
                       borderwidth=0)

        # 侧边栏按钮 - 现代扁平化，文字靠左对齐
        style.configure('SidebarButton.TButton',
                       background=cls.COLORS['bg_sidebar'],
                       foreground=cls.COLORS['text_white'],
                       borderwidth=0,
                       relief='flat',
                       focuscolor='none',
                       font=cls.FONTS['button'],
                       padding=(cls.SPACING['md'], cls.SPACING['sm']),
                       anchor='w')  # 文字靠左对齐

        # 侧边栏按钮悬停效果 - 确保字体一致
        style.map('SidebarButton.TButton',
                 background=[('active', cls.COLORS['sidebar_hover']),
                           ('pressed', cls.COLORS['primary'])],
                 font=[('active', cls.FONTS['button']),
                       ('pressed', cls.FONTS['button'])])

        # 侧边栏激活按钮 - 优化样式，更突出的视觉效果
        style.configure('SidebarButtonActive.TButton',
                       background=cls.COLORS['sidebar_active'],
                       foreground=cls.COLORS['text_white'],
                       borderwidth=1,
                       relief='flat',
                       focuscolor='none',
                       font=cls.FONTS['button'],  # 使用统一的按钮字体
                       padding=(cls.SPACING['md'], cls.SPACING['sm']),
                       anchor='w',  # 文字靠左对齐
                       bordercolor=cls.COLORS['primary_light'])  # 边框颜色

        # 侧边栏激活按钮悬停效果 - 确保字体一致
        style.map('SidebarButtonActive.TButton',
                 background=[('active', cls.COLORS['primary_hover']),
                           ('pressed', cls.COLORS['primary_dark'])],
                 font=[('active', cls.FONTS['button']),
                       ('pressed', cls.FONTS['button'])])
        

        # 侧边栏标签 - 现代化
        style.configure('SidebarTitle.TLabel',
                       background=cls.COLORS['bg_sidebar'],
                       foreground=cls.COLORS['text_white'],
                       font=cls.FONTS['title_medium'])

        style.configure('SidebarText.TLabel',
                       background=cls.COLORS['bg_sidebar'],
                       foreground=cls.COLORS['gray_400'],
                       font=cls.FONTS['body_small'])

        style.configure('SidebarGroup.TLabel',
                       background=cls.COLORS['bg_sidebar'],
                       foreground=cls.COLORS['gray_500'],
                       font=cls.FONTS['caption'])
    
    @classmethod
    def _configure_button_styles(cls, style: ttk.Style):
        """配置按钮样式"""
        # 主要按钮
        style.configure('Primary.TButton',
                       background=cls.COLORS['primary'],
                       foreground=cls.COLORS['text_white'],
                       borderwidth=0,
                       focuscolor='none',
                       font=cls.FONTS['button'],
                       padding=(cls.SPACING['md'], cls.SPACING['sm']))
        
        style.map('Primary.TButton',
                 background=[('active', cls.COLORS['primary_dark']),
                           ('pressed', cls.COLORS['primary_dark'])])
        
        # 次要按钮 - 现代扁平化
        style.configure('Secondary.TButton',
                       background=cls.COLORS['gray_100'],
                       foreground=cls.COLORS['text_primary'],
                       borderwidth=1,
                       relief='flat',
                       focuscolor='none',
                       font=cls.FONTS['button'],
                       padding=(cls.SPACING['padding_button'], cls.SPACING['sm']))

        style.map('Secondary.TButton',
                 background=[('active', cls.COLORS['gray_200']),
                           ('pressed', cls.COLORS['gray_300'])])

        # 成功按钮 - 现代绿色
        style.configure('Success.TButton',
                       background=cls.COLORS['success'],
                       foreground=cls.COLORS['text_white'],
                       borderwidth=0,
                       relief='flat',
                       focuscolor='none',
                       font=cls.FONTS['button'],
                       padding=(cls.SPACING['padding_button'], cls.SPACING['sm']))

        style.map('Success.TButton',
                 background=[('active', cls.COLORS['success_hover']),
                           ('pressed', cls.COLORS['success_hover'])])

        # 危险按钮 - 现代红色
        style.configure('Danger.TButton',
                       background=cls.COLORS['danger'],
                       foreground=cls.COLORS['text_white'],
                       borderwidth=0,
                       relief='flat',
                       focuscolor='none',
                       font=cls.FONTS['button'],
                       padding=(cls.SPACING['padding_button'], cls.SPACING['sm']))

        style.map('Danger.TButton',
                 background=[('active', cls.COLORS['danger_hover']),
                           ('pressed', cls.COLORS['danger_hover'])])

        # 大按钮样式
        style.configure('Large.TButton',
                       font=cls.FONTS['button_large'],
                       padding=(cls.SPACING['lg'], cls.SPACING['md']))

        # 工具栏按钮样式
        style.configure('Toolbar.TButton',
                       background=cls.COLORS['gray_100'],
                       foreground=cls.COLORS['text_primary'],
                       borderwidth=0,
                       relief='flat',
                       focuscolor='none',
                       font=cls.FONTS['body'],
                       padding=(cls.SPACING['md'], cls.SPACING['sm']))

        style.map('Toolbar.TButton',
                 background=[('active', cls.COLORS['gray_200']),
                           ('pressed', cls.COLORS['primary'])])

        # 激活状态的工具栏按钮
        style.configure('ToolbarActive.TButton',
                       background=cls.COLORS['primary'],
                       foreground=cls.COLORS['text_white'],
                       borderwidth=0,
                       relief='flat',
                       focuscolor='none',
                       font=cls.FONTS['body'],
                       padding=(cls.SPACING['md'], cls.SPACING['sm']))
    
    @classmethod
    def _configure_frame_styles(cls, style: ttk.Style):
        """配置现代化框架样式"""
        # 卡片框架 - 扁平化设计
        style.configure('Card.TFrame',
                       background=cls.COLORS['bg_card'],
                       relief='flat',
                       borderwidth=0)

        # 卡片标签框架 - 美化的分段标题
        style.configure('Card.TLabelframe',
                       background=cls.COLORS['bg_card'],
                       relief='flat',
                       borderwidth=1,
                       bordercolor=cls.COLORS['border_light'],
                       labeloutside=False)

        # 卡片标签框架的标题样式
        style.configure('Card.TLabelframe.Label',
                       background=cls.COLORS['bg_card'],
                       foreground=cls.COLORS['primary'],
                       font=cls.FONTS['heading_sm'],
                       padding=(8, 4))

        # 用户信息卡片 - 融合到侧边栏的特殊样式
        style.configure('UserCard.TFrame',
                       background=cls.COLORS['sidebar_card'],
                       relief='solid',
                       borderwidth=1,
                       bordercolor=cls.COLORS['sidebar_border'])

        # 工具栏框架 - 顶部快捷菜单样式
        style.configure('Toolbar.TFrame',
                       background=cls.COLORS['bg_primary'],
                       relief='flat',
                       borderwidth=1,
                       padding=cls.SPACING['sm'])

        # 工具栏边框
        style.configure('ToolbarBorder.TFrame',
                       background=cls.COLORS['border_light'],
                       relief='flat',
                       borderwidth=0)

        # 内容框架
        style.configure('Content.TFrame',
                       background=cls.COLORS['bg_primary'],
                       relief='flat',
                       borderwidth=0)
    
    @classmethod
    def _configure_label_styles(cls, style: ttk.Style):
        """配置现代化标签样式"""
        # 标题标签 - 现代化层次
        style.configure('Title.TLabel',
                       font=cls.FONTS['title_large'],
                       foreground=cls.COLORS['text_primary'],
                       background=cls.COLORS['bg_primary'])

        style.configure('Hero.TLabel',
                       font=cls.FONTS['hero'],
                       foreground=cls.COLORS['text_primary'],
                       background=cls.COLORS['bg_primary'])
        
        style.configure('Heading.TLabel',
                       font=cls.FONTS['heading'],
                       foreground=cls.COLORS['text_primary'])
        
        style.configure('Subheading.TLabel',
                       font=cls.FONTS['title_small'],
                       foreground=cls.COLORS['text_secondary'])
        
        # 状态标签
        style.configure('Success.TLabel',
                       foreground=cls.COLORS['success'],
                       font=cls.FONTS['body'])
        
        style.configure('Warning.TLabel',
                       foreground=cls.COLORS['warning'],
                       font=cls.FONTS['body'])
        
        style.configure('Danger.TLabel',
                       foreground=cls.COLORS['danger'],
                       font=cls.FONTS['body'])

        # 常用标签样式
        style.configure('Body.TLabel',
                       font=cls.FONTS['body'],
                       foreground=cls.COLORS['text_primary'],
                       background=cls.COLORS['bg_primary'])

        style.configure('Muted.TLabel',
                       font=cls.FONTS['body'],
                       foreground=cls.COLORS['text_muted'],
                       background=cls.COLORS['bg_primary'])

        style.configure('Caption.TLabel',
                       font=cls.FONTS['caption'],
                       foreground=cls.COLORS['text_secondary'],
                       background=cls.COLORS['bg_primary'])

        style.configure('Link.TLabel',
                       font=cls.FONTS['body'],
                       foreground=cls.COLORS['text_link'],
                       background=cls.COLORS['bg_primary'])

        # 侧边栏标签样式
        style.configure('SidebarTitle.TLabel',
                       background=cls.COLORS['bg_sidebar'],
                       foreground=cls.COLORS['text_white'],
                       font=cls.FONTS['title_medium'])

        style.configure('SidebarText.TLabel',
                       background=cls.COLORS['bg_sidebar'],
                       foreground=cls.COLORS['gray_400'],
                       font=cls.FONTS['body_small'])

        style.configure('SidebarGroup.TLabel',
                       background=cls.COLORS['bg_sidebar'],
                       foreground=cls.COLORS['gray_500'],
                       font=cls.FONTS['caption'])
        
        # 次要文本
        style.configure('Muted.TLabel',
                       foreground=cls.COLORS['text_muted'],
                       font=cls.FONTS['body_small'])
    
    @classmethod
    def _configure_entry_styles(cls, style: ttk.Style):
        """配置输入框样式"""
        style.configure('TEntry',
                       fieldbackground=cls.COLORS['white'],
                       borderwidth=1,
                       insertcolor=cls.COLORS['primary'])
    
    @classmethod
    def _configure_treeview_styles(cls, style: ttk.Style):
        """配置树形视图样式"""
        style.configure('Treeview',
                       background=cls.COLORS['white'],
                       foreground=cls.COLORS['text_primary'],
                       fieldbackground=cls.COLORS['white'],
                       font=cls.FONTS['body'])
        
        style.configure('Treeview.Heading',
                       background=cls.COLORS['bg_secondary'],
                       foreground=cls.COLORS['text_primary'],
                       font=cls.FONTS['heading'])
    
    @classmethod
    def _configure_notebook_styles(cls, style: ttk.Style):
        """配置选项卡样式"""
        style.configure('TNotebook',
                       background=cls.COLORS['bg_primary'])
        
        style.configure('TNotebook.Tab',
                       background=cls.COLORS['gray_100'],
                       foreground=cls.COLORS['text_primary'],
                       font=cls.FONTS['button'],
                       padding=(cls.SPACING['md'], cls.SPACING['sm']))
        
        style.map('TNotebook.Tab',
                 background=[('selected', cls.COLORS['primary']),
                           ('active', cls.COLORS['primary_light'])],
                 foreground=[('selected', cls.COLORS['text_white'])])


# 🎨 设计工具函数
def create_card_frame(parent, title: str = None, padding: int = None) -> ttk.Frame:
    """创建卡片样式的框架"""
    if padding is None:
        padding = DesignSystem.SPACING['padding_card']

    if title:
        frame = ttk.LabelFrame(parent, text=title, style='Card.TLabelframe', padding=padding)
    else:
        frame = ttk.Frame(parent, style='Card.TFrame', padding=padding)

    return frame


def create_toolbar_frame(parent, padding: int = None) -> ttk.Frame:
    """创建工具栏样式的框架"""
    if padding is None:
        padding = DesignSystem.SPACING['padding_section']

    frame = ttk.Frame(parent, style='Toolbar.TFrame', padding=padding)
    return frame


def create_user_card_frame(parent) -> tuple:
    """创建用户信息卡片框架 - 圆角效果"""
    # 外层容器
    container = tk.Frame(parent, bg=DesignSystem.COLORS['bg_sidebar'])

    # 内层卡片 - 模拟圆角效果
    card = tk.Frame(
        container,
        bg=DesignSystem.COLORS['sidebar_card'],
        relief='flat',
        bd=0,
        padx=DesignSystem.SPACING['md'],
        pady=DesignSystem.SPACING['md']
    )
    card.pack(fill="both", expand=True, padx=2, pady=2)

    return container, card


def create_primary_button(parent, text: str, command=None, **kwargs) -> ttk.Button:
    """创建主要按钮"""
    return ttk.Button(parent, text=text, command=command, style='Primary.TButton', **kwargs)


def create_secondary_button(parent, text: str, command=None, **kwargs) -> ttk.Button:
    """创建次要按钮"""
    return ttk.Button(parent, text=text, command=command, style='Secondary.TButton', **kwargs)


def create_success_button(parent, text: str, command=None, **kwargs) -> ttk.Button:
    """创建成功按钮"""
    return ttk.Button(parent, text=text, command=command, style='Success.TButton', **kwargs)


def create_danger_button(parent, text: str, command=None, **kwargs) -> ttk.Button:
    """创建危险按钮"""
    return ttk.Button(parent, text=text, command=command, style='Danger.TButton', **kwargs)
